package smallfrench.moteur.biblio;

import java.util.HashMap;
import java.util.Map.Entry;

import smallfrench.moteur.interp.RObjet;


public class REnumeration extends RObjet {

	private final HashMap<String, REntier> map;

	public REnumeration(String[] membres) {

		super(RClasseEnumeration.CLASSE);

		map = new HashMap<String, REntier>();
		for (int i = 0; i < membres.length; i++) {
			map.put(membres[i], new REntier(i));
		}
	}

	/**
	 * 
	 * @param membre
	 * @return Le nom du membre ou <code>null</code>.
	 */
	public String getNomMembre(int membre) {
		for (Entry<String, REntier> entree : map.entrySet()) {
			if (entree.getValue().valeur == membre) {
				return entree.getKey();
			}
		}
		return null;
	}

	@Override
	public RObjet getMembre(String nom) {
		REntier membre = map.get(nom);
		if (membre != null)
			return membre;
		else {
			return classe.champs.get(nom);
		}
	}

	@Override
	public boolean equals(Object objet) {
		return objet == this;
	}

	@Override
	public RChaine enChaine() {
		return new RChaine("Enumeration");
	}

}
